﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
using System.Web.Mvc;
using System.Web.Security;
using Ext.Net.MVC;

namespace SocialGame.Models
{

    public class ChangePasswordModel
    {
        [Required]
        [DataType(DataType.Password)]
        [Display(Name = "Current password")]
        public string OldPassword { get; set; }

        [Required]
        [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
        [DataType(DataType.Password)]
        [Display(Name = "New password")]
        public string NewPassword { get; set; }

        [DataType(DataType.Password)]
        [Display(Name = "Confirm new password")]
        [Compare("NewPassword", ErrorMessage = "The new password and confirmation password do not match.")]
        public string ConfirmPassword { get; set; }
    }

    public class LogOnModel
    {
        [Required(ErrorMessage = "*")]
        [Display(Name = "Tên đăng nhập")]
        public string UserName { get; set; }

        [Required(ErrorMessage = "*")]
        [DataType(DataType.Password)]
        [Display(Name = "Mật khẩu")]
        public string Password { get; set; }

        [Display(Name = "Lưu đăng nhập")]
        public bool RememberMe { get; set; }
    }

    public class RegisterModel
    {
        [Field(FieldType = typeof(Ext.Net.Hidden))]
        public int UserID { get; set; }
        [Required(ErrorMessage = "Nhập tên đăng nhập")]
        [Display(Name = "Tên đăng nhập")]
        [Remote("CheckUsername", "User_Managerment")]
        public string UserName { get; set; }
        [Required(ErrorMessage = "Phải nhập {0}")]
        [Display(Name = "Họ và tên")]
        public string FullName { get; set; }
        [DataType(DataType.EmailAddress)]
        [Required(ErrorMessage = "Nhập địa chỉ email")]
        [Display(Name = "Email")]
        [Remote("CheckEmail", "User_Managerment")]
        public string Email { get; set; }
        [Required(ErrorMessage = "Phải nhập {0}")]
        [Display(Name = "Ngày sinh")]
        public DateTime BOD { get; set; }
        [Required(ErrorMessage = "Phải nhập {0}")]
        [Display(Name = "Số điện thoại")]
        public string Mobile1 { get; set; }
        [Display(Name = "Số điện thoại 2")]
        public string Mobile2 { get; set; }
        [Required(ErrorMessage = "Nhập mật khẩu đăng nhập")]
        [StringLength(100, ErrorMessage = "Mật khẩu  {0} phải ít nhất {2} ký tự.", MinimumLength = 6)]
        [DataType(DataType.Password)]
        [Display(Name = "Mật khẩu")]
        public string Password { get; set; }
        [DataType(DataType.Password)]
        [Display(Name = "Mật khẩu xác nhận")]
        [Compare("Password", ErrorMessage = "Mật khẩu xác nhận không đúng.")]
        public string ConfirmPassword { get; set; }
        [Display(Name = "Kích hoạt")]
        public bool Status { get; set; }
        [Required]
        [UIHint("Role")]
        public AccountRole Role { get; set; }
    }

    public class AccountRole
    {
        public const String ADMIN = "ADMIN";
        public const String USER = "USER";
        public const String LEADER = "LEADER";
        public string ID { get; set; }
        public string Name { get; set; }
        public static List<AccountRole> GetAll()
        {
            return new List<AccountRole>
            {
                new AccountRole { ID = ADMIN, Name = "Quản trị" },
                new AccountRole { ID = USER, Name = "Người dùng" }                 
            };
        }
    }

    public class UserStatus
    {
        public const String ACTIVE = "ACTIVE";
        public const String INACTIVE = "INACTIVE";
        public string ID { get; set; }
        public string Name { get; set; }
        public static List<UserStatus> GetAll()
        {
            return new List<UserStatus>
            {
                new UserStatus { ID = ACTIVE, Name = "Đang hoạt động" },
                new UserStatus { ID = INACTIVE, Name = "Ngừng hoạt động" }                
            };
        }
    }
}
